/* 
    817. 链表组件
    值存在于数组中的节点，是连续的几段。
    只需在链表中计算有多少组件的起始位置即可 当一个节点满足以下条件之一
    时，它是组件的起始位置:
    节点的值在数组nums中且节点位于链表起始位置
    节点的值在数组中且节点的前一个值不在数组中
*/
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @param {number[]} nums
 * @return {number}
 */
var numComponents = function (head, nums) {
	const numsSet = new Set(nums)
	let inSet = false
	let res = 0
	while (head) {
		if (numsSet.has(head.val)) {
			if (!inSet) {
				inSet = true
				res++
			}
		} else {
			inSet = false
		}
		head = head.next
	}
}
